/**
 * This file is part of Idegen, the application to create IDE project files.
 *
 * @copyright Copyright (c) 2011-2012, Walter Tamboer http://waltertamboer.nl
 * @file Idegen/Application/Application.hpp
 */

#ifndef IDEGEN_APPLICATION_APPLICATION_HPP
#define IDEGEN_APPLICATION_APPLICATION_HPP

namespace Idegen
{
	/** A forward declaration to the Settings class. */
	class Settings;

	/** The application class which starts up Idegen. */
	class Application
	{
	public:
		/**
		 * Initializes a new instance of this class.
		 *
		 * @param[in] settingsFile The path to the settings file to use.
		 */
		Application( const std::string& settingsFile );

		/**
		 * Initializes a new instance of this class.
		 *
		 * @param[in] settingsFile The path to the settings file to use.
		 * @param[in] basePath The path to start working from.
		 */
		Application( const std::string& settingsFile, const std::string& basePath );

		/** Cleans up all the resources used by this class. */
		~Application();

		/**
		 * Runs the application.
		 *
		 * @return Returns true when the application exists without errors; false otherwise.
		 */
		bool Run();

	private:
		/** The settings that are used to run the application. */
		Settings* m_Settings;
	};
}

#endif
